package com.icez.base_util_library

import com.google.gson.Gson
import com.google.gson.reflect.TypeToken

/**
 *  json工具类
 * @author icez
 */
class JsonUtil {
    companion object{
        val instance:JsonUtil by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED){
            JsonUtil()
        }
        val GSON = Gson()
    }

    /**
     *  对象转换json字符串
     * @param obj 对象
     */
    public fun toJson(obj:Any?): String? {
        return GSON.toJson(obj)
    }


    /**
     *  字符串转对象
     * @param json json字符串
     * @param cls 对象class
     */
    public fun <T> toObject(json:String,cls:Class<T>):T{
        return GSON.fromJson(json,cls)
    }

    /**
     * @param json转换数组对象
     * @param json json字符串
     */
    public  fun <T> toArrayObject(json:String?):ArrayList<T>{
        return GSON.fromJson(json,
            object : TypeToken<ArrayList<T?>?>() {}.type)
    }

    /**
     *  字符串转对象
     * @param json json字符串
     */
    public fun <T> toObject(json:String?):T{
        val type = object : TypeToken<T>() {}.type
        return GSON.fromJson(json.toString(), type)
    }


}